﻿using DTcms.API.Payment.xdd;
using DTcms.Common;
using System;
using System.Collections.Specialized;
using System.Web.Mvc;
using System.Web.UI;

/// <summary>
/// 功能：付完款后跳转的页面（页面跳转同步通知页面）
/// 版本：3.1
/// 日期：2010-10-29
/// 说明：
/// 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
/// 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。
/// 
/// ///////////////////////页面功能说明///////////////////////
/// 该页面可在本机电脑测试
/// 该页面称作“页面跳转同步通知页面”，是由支付宝服务器同步调用，可当作是支付完成后的提示信息页，如“您的某某某订单，多少金额已支付成功”。
/// 可放入HTML等美化页面的代码和订单交易完成后的数据库更新程序代码
/// 该页面可以使用ASP.NET开发工具调试，也可以使用写文本函数Log_result进行调试，该函数已被默认关闭
/// TRADE_FINISHED(表示交易已经成功结束，为普通即时到帐的交易状态成功标识);
/// TRADE_SUCCESS(表示交易已经成功结束，为高级即时到帐的交易状态成功标识);
/// </summary>
namespace DTcms.Web.Mvc.api.payment.xdd
{
    public partial class return_url : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            int site_payment_id = 0; //站点支付方式ID
            NameValueCollection collection;
            if (Context.Request.HttpMethod == "POST")
            {
                collection = Context.Request.Form;
            }
            else
            {
                collection = Context.Request.QueryString;
            }
            if (collection.Count > 0)
            {
                string order_no = DTRequest.GetString("out_trade_no").ToUpper(); //获取订单号
                if (order_no.StartsWith("R")) //充值订单
                {
                    site_payment_id = new BLL.user_recharge().GetPaymentId(order_no);
                }
                else if (order_no.StartsWith("B")) //商品订单
                {
                    Response.Redirect(UrlHelperExtend.linkurl("error", "?msg=" + Utils.UrlEncode("B开头为商品订单功能弃用！")));
                    return;
                }
                //找到站点支付方式ID开始验证
                if (site_payment_id > 0)
                {
                    //创建PayResponseHandler实例
                    XddpayResponse xddpayresponse = new XddpayResponse(site_payment_id, collection, Context);

                    if (xddpayresponse.IsXddpaySign())//判断签名
                    {
                        string subject = xddpayresponse.getParameter("subject");    //商品名称
                        string pay_type = xddpayresponse.getParameter("pay_type");  //支付类型
                        string money = xddpayresponse.getParameter("money");    //订单金额
                        string realmoney = xddpayresponse.getParameter("realmoney");    //实际支付金额
                        string result = xddpayresponse.getParameter("result");          //支付结果
                        string xddpay_order_no = xddpayresponse.getParameter("xddpay_order");          //小叮当订单号
                        string app_id = xddpayresponse.getParameter("app_id"); //接口app_id
                        string extra = xddpayresponse.getParameter("extra");    //用户自定义数据

                        if ("success".Equals(result))
                        {
                            if (order_no.StartsWith("R")) //充值订单
                            {
                                site_payment_id = new BLL.user_recharge().GetPaymentId(order_no);
                            }
                            else if (order_no.StartsWith("B")) //商品订单
                            {
                                Response.Redirect(UrlHelperExtend.linkurl("error", "?msg=" + Utils.UrlEncode("B开头为商品订单功能弃用！")));
                                return;
                            }
                            //找到站点支付方式ID开始验证
                            if (site_payment_id > 0)
                            {
                                //成功状态
                                Response.Redirect(UrlHelperExtend.linkurl("payment", "?action=succeed&order_no=" + order_no));
                                return;
                            }
                        }
                        else
                        {
                            Response.Redirect(UrlHelperExtend.linkurl("payment", "?action=error"));
                            return;
                        }
                    }
                    else
                    {
                        Response.Redirect(UrlHelperExtend.linkurl("payment", "?action=error"));
                        return;
                    }
                }
            }
            Response.Redirect(UrlHelperExtend.linkurl("payment", "?action=error"));
            return;
        }
    }
}